In Ruby, passare oltre il percorso felice significa passare da un ragionamento lineare a una posizione difensiva in cui gli errori sono trattati come oggetti di prima classe piuttosto che come catastrofi che interrompono il programma.
1. L'architettura delle eccezioni
Ruby definisce in modo preciso una gerarchia ordinata di eccezioni mostrata in Figura 8.1. Ogni errore è un'istanza di una classe all'interno di questo albero, partendo dal Exception radice. Comprendere questo albero è fondamentale: gli errori di livello applicativo derivano generalmente da StandardError, mentre i fallimenti a livello di sistema (come NoMemoryError) discendono direttamente da Exception.
2. Gli errori come oggetti dati
A differenza dei linguaggi a basso livello dove un errore potrebbe essere semplicemente un codice di ritorno, Ruby incapsula il contesto—compreso il messaggio e il tracciato dell'esecuzione—in un oggetto formale. Ciò consente agli sviluppatori di trattare gli interventi in fase di esecuzione come dati che possono essere ispezionati e gestiti tramite ereditarietà.